# -*- coding: utf-8 -*-
"""
-------------------------------------------------
   File Name：     main
   Description : 主程序入口
   Author :       pc
   date：          2018/1/7
-------------------------------------------------
   Change Activity:
                   2018/1/7: create
-------------------------------------------------
"""
import os
import log_util2
from list_file import GetFileList
import table_obj

# 计算文件名
g_cal_type = "日明细"
# 计算方法 new 全量重新计算  inc 增量计算
cal_kind = "new"
# excel文件存放目录名
excel_dir_name = "excelFile"
# 获取执行程序所在的路径
g_xlsPath = os.path.join(os.path.dirname(__file__), excel_dir_name)
# 需要计算的月份
g_cal_Month = 201803
# 需要汇总的文件
g_file_list = []
# 需要汇总的部门
g_depart_list = []


def is_a_month(cal_month):
    if not cal_month.isalnum():
        return False
    if len(cal_month) != 6:
        return False
    if int(cal_month[4:6]) < 1 or int(cal_month[4:6]) > 12:
        return False
    return True


def switch_table_obj():
    global g_cal_type
    global g_cal_Month
    global g_file_list
    global g_depart_list
    global g_xlsPath

    if g_cal_type == '日明细':
        pay_xls = table_obj.MonDetailPayroll()
        pay_xls.start_cal(g_cal_Month, g_file_list, g_depart_list, g_xlsPath)


def init_cal():
    global g_file_list
    global g_depart_list
    global g_xlsPath
    global g_cal_Month
    global g_cal_type

    log_util2.info("开始初始化程序")
    # 过滤需要计算xls文件
    g_file_list = GetFileList(g_xlsPath, [g_cal_Month, g_cal_type], 'xlsx')
    log_util2.debug("过滤出需要计算的原始文件：%s" % g_file_list)

    # 计算需要汇总的部门
    for x in g_file_list:
        if x.split("_")[0] not in g_depart_list:
            g_depart_list.append(x.split("_")[0])

    log_util2.debug('总共需要计算的工资部门：%s' % g_depart_list)


def do_cal():
    # 初始化全局变量
    init_cal()

    # 根据计算类型分发计算
    switch_table_obj()


if __name__ == '__main__':
    g_cal_Month = input("请输入需要计算的月份，如201803：\n")

    if is_a_month(g_cal_Month):
        do_cal()
    else:
        log_util2.error("请正确的输入月份")
        exit(1)
